//
//
#ifndef GeometricAlgorithm_h__
#define GeometricAlgorithm_h__

#include "Point2D.h"
#include "Segment2D.h"
#include "Ray2D.h"
#include "Line2D.h"

#include "Rectangle2D.h"
#include "Polygon2D.h"
#include "Circle2D.h"

namespace Geometric
{
	class _GEOMETRIC Algorithm2D
	{
	private:
		Algorithm2D(){};
		~Algorithm2D(){};

	public:
		/*
		 *	Abstract: get the intersect point between the two line/ray/segment
		 *	Parameter:
		 *		@1.input object one
		 *		@2.input object two
		 *		@3.output object
		*/
		static int getIntersectPoint(Line2D& _line1, Line2D& _line2, Point2D& _point);
		static int getIntersectPoint(Segment2D& _segment1, Segment2D& _segment2, Point2D& _point);
		static int getIntersectPoint(Ray2D& _ray1, Ray2D& _ray2, Point2D& _point);
		static int getIntersectPoint(Line2D& _line, Segment2D& _segment, Point2D& _point);
		static int getIntersectPoint(Line2D& _line, Ray2D _ray, Point2D& _point);
		static int getIntersectPoint(Segment2D& _segment, Ray2D& _ray, Point2D& _point);

	public:
		//
		static bool isInside(Circle& _circle, Rectangle2D& _rect);

		//
		static bool isBlank(Point2D& _view, Point2D& _a, Point2D& _b, Point2D& _c, Point2D& _d);
	};



}


#endif